package main

import "fmt"

/*
求中位数
*/
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
	if len(nums1) == 0 && len(nums2) == 0 {
		return 0
	}
	if len(nums1) == 0 && len(nums2) == 1 {
		return float64(nums2[0])
	}
	if len(nums2) == 0 && len(nums1) == 1 {
		return float64(nums1[0])
	}
	if len(nums1) == 1 && len(nums2) == 1 {
		return (float64(nums1[0]) + float64(nums2[0])) / 2
	}
	if len(nums1) == 2 && len(nums2) == 0 {
		return (float64(nums1[0]) + float64(nums1[1])) / 2
	}
	if len(nums1) == 0 && len(nums2) == 2 {
		return (float64(nums2[0]) + float64(nums2[1])) / 2
	}
	if len(nums1) == 0 {
		return findMedianSortedArrays(nums1, nums2[1:len(nums2)-1])
	}
	if len(nums2) == 0 {
		return findMedianSortedArrays(nums1[1:len(nums1)-1], nums2)
	}
	flag1 := nums1[0] > nums2[0]
	flag2 := nums1[len(nums1)-1] > nums2[len(nums2)-1]
	if !flag1 && flag2 {
		return findMedianSortedArrays(nums1[1:len(nums1)-1], nums2)
	}
	if flag1 && flag2 {
		return findMedianSortedArrays(nums1[:len(nums1)-1], nums2[1:])
	}
	if !flag1 && !flag2 {
		return findMedianSortedArrays(nums1[1:], nums2[:len(nums2)-1])
	}
	if flag1 && !flag2 {
		return findMedianSortedArrays(nums1, nums2[1:len(nums2)-1])
	}
	return 0
}

func main() {
	nums1 := []int{}
	nums2 := []int{1, 2, 3, 4}
	//fmt.Println(nums1[1:len(nums1)-1])
	median := findMedianSortedArrays(nums1, nums2)
	fmt.Println(median)
}
